1. Field of the Invention
The present application relates generally to an improved data processing apparatus and method and more specifically to mechanisms for reducing idle time due to acknowledgement packet delay.
2. Background of the Invention
Transmission Control Protocol (TCP) and Internet Protocol (IP) are the primary protocols used for large scale interconnectivity of computing devices in the world today. TCP provides reliable, in-order delivery of a stream of bytes, making it suitable for applications like file transfer and e-mail. IP is a data-oriented network layer protocol used for communicating data across a packet-switched internetwork. As a lower layer protocol, IP provides the service of communicable unique global addressing amongst computers whereas TCP is the transport protocol that manages the individual conversations between computers, e.g., web servers and web clients. TCP divides the messages into smaller pieces and is also responsible for controlling the size and rate at which messages are exchanged between the computers. Together, TCP and IP are often referred to as the TCP/IP protocol suite.
As described in the CISCO Systems Internetworking Technology Handbook, (available at www.cisco.com/en/US/docs/internetworking/technology/handbook/Internet-Protocols.html#wp1156) TCP/IP uses a sliding window mechanism to control the data flow between the two computers (sender and receiver) in a TCP/IP connection. A TCP sliding window provides efficient use of network bandwidth because it enables computers to send multiple bytes or packets before waiting for an acknowledgment packet.
In TCP, the receiver computer specifies the current window size in every packet. Because TCP provides a byte-stream connection, window sizes are expressed in bytes. This means that a window is the number of data bytes that the sender computer is allowed to send before waiting for an acknowledgment packet from the receiver computer. Initial window sizes are indicated at connection setup, but might vary throughout the data transfer to provide flow control. A window size of zero, for instance, means “Send no data.”
In a TCP sliding-window operation, for example, the sender computer may have a sequence of bytes to send (numbered 1 to 10) to a receiver computer who has a window size of five. The sender computer may then place a window around the first five bytes and transmit them together. The sender computer may then wait for an acknowledgment packet to be returned by the receiver computer indicating that more data may be sent.
The receiver computer may respond with an ACK=6, indicating that it has received bytes 1 to 5 and is expecting byte 6 next. In the same packet, the receiver computer may indicate that its window size is 5. The sender computer may then move the sliding window five bytes to the right and transmit bytes 6 to 10. The receiver computer may respond with an ACK=11, indicating that it is expecting sequenced byte 11 next. In this packet, the receiver computer might indicate that its window size is 0 (because, for example, its internal buffers are full). At this point, the sender computer cannot send any more bytes until the receiver computer sends another packet with a window size greater than 0.
Thus, with the sliding-window operation, the flow of data between the sender and receiver computers is paused many times to make sure that the receiver has enough resources for handling the incoming data. If the receiver computer cannot quickly process the TCP/IP receive buffers, the TCP/IP window may become full and, as a result, the sender computer will stop the sending of data and wait for an acknowledgement packet with a window size greater than 0.